//
//  WBUserAccount.swift
//  Weibo
//
//  Created by niqiang on 16/7/8.
//  Copyright © 2016年 niqiang. All rights reserved.
//

import UIKit

private let accountFile: NSString = "useraccout.json"

//用户账户信息
class WBUserAccount: NSObject {
    //访问令牌
    var access_token: String?
    //用户代号
    var uid:String?
    //access_token生命周期，单位是秒数
    //开发者5年（每次登录后都是5年）  使用者3天（会从第一次登录递减）
    var expires_in: TimeInterval = 0 {
        didSet {
            expiresDate = Date(timeIntervalSinceNow: expires_in)
        }
    }
    
    //过期日期
    var expiresDate: Date?
    
    //用户昵称
    var screen_name: String?
    //用户头像地址（大图）
    var avatar_large: String?
    
    
    override var description: String{
        return yy_modelDescription()
    }
    
    override init() {
        super.init()
        //从磁盘加载保存的文件 -> 字典
//        //1>加载磁盘文件到二进制数据，如果失败直接返回
        guard let path = accountFile.cz_appendDocumentDir(),
            data = NSData(contentsOfFile: path),
            dict = try? JSONSerialization.jsonObject(with: data as Data, options: []) as? [String: AnyObject]
            else{
                return
        }
        //2.使用字典设置属性值 ----用户是否登录的关键代码
        yy_modelSet(with: dict ?? [:])
        
        //3.判断token是否过期
        if expiresDate?.compare(Date()) != .orderedDescending {
        print("账户过期")
            
            //清空token
            access_token = nil
            uid = nil
            
            //删除账户文件
            _ = try? FileManager.default().removeItem(atPath: path)
        }
    }
    
    //数据存储  沙盒-归档 plist、json
    func saveAccount() {
        //1.模型转字典
        var dict = (self.yy_modelToJSONObject() as? [String: AnyObject]) ?? [:]
        
        //需要删除 expires_in值
        dict.removeValue(forKey: "expires_in")
        
        //2.字典序列化 data
        guard let data = try? JSONSerialization.data(withJSONObject: dict, options: []),
            //            filePath = ("useraccout.json" as NSString).cz_appendDocumentDir()
            filePath = accountFile.cz_appendDocumentDir()
            else{
                return
        }
        //3.写入磁盘
        (data as NSData).write(toFile: filePath, atomically: true)
        
        print("用户账户保存成功 \(filePath)")
    }
    
}
